/*
 * @File    :   get_all_files.js
 * @Time    :   2024/03/20 18:49:57
 * @Author  :   chakcy
 * @Email   :   947105045@qq.com
 * @description   :   获取文件夹下的所有文件
 */

// 使用Node.js的文件系统模块和路径模块
const fs = require('fs').promises;
const path = require('path');

/**
 * 递归地获取指定目录下的所有文件路径
 * @param {string} dirPath - 目录路径
 * @param {Array} arrayOfFiles - 文件路径数组
 * @returns {Promise<Array>} - 包含所有文件路径的数组
 */
async function getAllFiles(dirPath, arrayOfFiles = []) {
    // 读取目录的内容
    const files = await fs.readdir(dirPath, { withFileTypes: true });

    for (const dirent of files) {
        const res = path.resolve(dirPath, dirent.name);
        if (dirent.isDirectory()) {
            // 如果是子目录，递归获取子目录下的文件路径
            arrayOfFiles = await getAllFiles(res, arrayOfFiles);
        } else {
            // 将文件路径添加到数组中
            arrayOfFiles.push(res);
        }
    }

    return arrayOfFiles;
}

// 导出模块，暴露getAllFiles函数
module.exports = {
    getAllFiles
}